package com.atguigu.spzx.manager.service;

import com.atguigu.spzx.manager.entity.Product;
import com.atguigu.spzx.manager.vo.product.*;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.springframework.transaction.annotation.Transactional;

/**
 * 商品服务接口
 */
public interface ProductService {

    /**
     * 条件分页查询商品
     *
     * @param pageParam 分页参数
     * @param reqVo     查询条件
     * @return 分页结果
     */
    Page<ProductQueryRespVo> getProductPageByQuery(Page<Product> pageParam, ProductQueryReqVo reqVo);

    /**
     * 添加商品
     *
     * @param reqVo 商品信息
     */
    @Transactional
    void saveProduct(ProductSaveReqVo reqVo);

    /**
     * 根据商品ID查询商品详情
     *
     * @param id 商品ID
     * @return 商品详情
     */
    ProductDetailsRespVo getProductById(Long id);

    /**
     * 修改商品信息
     *
     * @param reqVo 商品信息
     */
    void updateProductById(ProductUpdateReqVo reqVo);

    /**
     * 根据商品ID删除商品
     *
     * @param id 商品ID
     */
    void deleteProductById(Long id);

    /**
     * 商品审核
     *
     * @param id           商品ID
     * @param auditStatus  审核状态
     */
    void updateAuditStatusById(Long id, Integer auditStatus);

    /**
     * 商品上下架
     *
     * @param id     商品ID
     * @param status 商品状态
     */
    void updateStatusById(Long id, Integer status);
}
